1. Field of the Invention
This field relates generally to memory allocation, and more specifically, to memory allocation in embedded or wireless communication systems
2. Description of the Related Art
Memory allocation services make use of pools of memory items. In some cases, memory items are sorted into different pools based on the size of the memory item. For example, one pool might consist of many small memory items while another pool might consist of relatively few large memory items. In response to memory allocation requests, an appropriate data item may be selected from a particular pool and returned to the requesting entity. This system results in significant wasted memory and processor resources. For example, with small memory items, the ratio of header to payload is high resulting in inefficient use of memory. Further, when entire memory items are allocated, significant data portions of any particular data item may go unused. Also, in these allocation services, no statistical multiplexing is available. Processor resources are also consumed due to the chaining of multiple small memory items.
In wireless communication systems, packets are often segmented into small fixed size “radio link” packets, for example 40 bytes, to ensure reliable radio transmission. In order to use memory efficiently, one approach is to create a large pool of relatively small memory items, each holding a 40 byte block, which eventually may be chained together at the higher layers to form larger data blocks (e.g. 1500 byte IP packets). One disadvantage of this service is that some space may be wasted because the memory items may have to be cache row aligned (32 or 64 byte), which may not fit the small radio link packet size. Also, different technologies may share the same memory item pool to reduce to overall memory, in which case the memory item payload size must be chosen to fit the largest radio link packet size which can further increase wastage.